SQL - Dialog Parameter definieren

Unter Eigene Daten / Makro-Assistent - Schalter Parameter - Abfrageparameter bearbeiten über den Schalter können Sie vorhandene Abfrageparameter bearbeiten. Mit dem Aufruf des Dialogs wird die SQL-Anweisung nach Parametern durchsucht – diese stehen dann in der Liste unter Parameter zur Bearbeitung zur Verfügung,

Abbildung 4.54: Dialog Parameter definieren

Übersicht

Parametername - Alle Eingaben (Ausnahme Einstellungen zur ”Automatik”) in diesem Dialog beziehen sich immer auf den selektierten Eintrag der Liste Parameter.

Datentyp - Dem selektierten Parameter ist der entsprechende Datentyp zuzuweisen.

Auswahlfeld - Zusätzlich zur manuellen Eingabe von Parameterwerten hat man auch die Möglichkeit, Schlüsselfelder aus einer Liste als Parameterwert zu holen. Dazu ist für den selektierten Parameter die Option ”Auswahlfeld” zu setzen und die entsprechende Tabelle einzustellen. Wollen Sie z.B. in einer Tabelle mit Belegen eine Auswertung für bestimmte Kunden machen, müssen Sie im Auswahlfeld die Tabelle Kunde wählen. Bei Eingabe des Parameterwertes können Sie dann aus einer Liste den entsprechenden Kunden wählen.

Vorgabewert - Als Standard wird immer der letzte verwendete Parameter beim Start der Abfrage vorgeschlagen. Tragen Sie einen Vorgabewert ein, wird dieser Wert beim Start des Makro verwendet. Für den Datentyp Date steht der Vorgabewert ” aktuelles Datum ” zur Verfügung.

Hinweistext - Vor der Ausführung der SQL-Anweisung erscheint ein Dialog zur Eingabe der Parameterwerte. Der hier je Parameter hinterlegte Hinweistext erscheint jeweils in der Statuszeile, wenn der Pfeil auf das Eingabefeld zeigt.

Parameterautomatik

Für die Abfrageparameter kann eingestellt werden, ob

  • die Parameter vor dem Starten immer abgefragt werden (Beispiel siehe oben – die Parameternamen sind völlig beliebig)
  • im aktiven Stammdialog die betroffenen Tabellenfelder gesucht und als Vorschlag für die Parameter angeboten werden
  • im aktiven Stammdialog die betroffenen Tabellenfelder gesucht werden und, wenn alle Parameter gefunden wurden, die Anweisung ohne Parameterkontrolle gestartet wird.

SQL-Befehlssatz

SQL ist eine leistungsfähige Sprache, mit der Sie mit kurzen Anweisungen in relationalen Datenbanken operieren können. Die Sprachsyntax und der -umfang sind nicht einheitlich geregelt und können von Hersteller zu Hersteller variieren. Per SQL können Sie Abfragen erstellen, Tabellen und Indizes erzeugen, ändern und löschen sowie Felder manipulieren. Für die BDE-Version wird der Befehlssatz des Local-SQL und für die SQL-Version der Befehlssatz der Transact-SQL genutzt.

Hinweis: Erfahrungsgemäss werden vor allem SQL-Abfragen erstellt. Die aufgeführten Beispiele beziehen sich auf die SQL-Version.

Syntax

Die Abfragesyntax lautet:

SELECT [ALL|DISTINCT] {spalten|*}
FROM tabelle [AS alias] [tabelle [AS alias]]...
[WHERE {bedingung}]
[GROUP BY spalten [HAVING {bedingung|subquery}]]
[ORDER BY spalten [ASC|DESC]...]

Dabei wurden alle SQL-Begriffe in Grossbuchstaben geschrieben, alle zu ersetzenden Begriffe in Kleinbuchstaben. Teile, die nicht immer notwendig sind, stehen in eckigen Klammern und Teile, bei denen es mehrere Möglichkeiten gibt, stehen in geschweiften Klammern und sind durch einen senkrechten Strich geteilt. Die SQL-Syntax unterscheidet nicht zwischen Gross- und Kleinschreibung und benötigt keine Zeilentrennungen zwischen den Elementen.

Operatoren

Operatoren, die in Bedingungen Verwendung finden, nach ihrer Bindekraft geordnet:

Multiplikation

*

Division

/

Addition

Subtraktion

-

Gleichheit

=

Ungleichheit

!= oder <>

Vergleiche

>, <, >=, <=

Enthaltensein

IN menge

Nullwert

IS [NOT] NULL

Bereich

BETWEEN start AND ende

Ähnlichkeit

LIKE muster mit wildcards % und _

Negation

NOT

logisches Und

AND

logisches Oder

OR

Weitere Funktionen

Runde Klammern werden zum Bilden von Belehnungen benutzt.

Zeichenkettenaddition

Teilzeichenkette

BDE:
SUBSTRING(string FROM start FOR länge)
SQL:
SUBSTRING(string,start,länge)

Kleinbuchstaben

LOWER (string)

Grossbuchstaben

UPPER (string)

Datumsentschlüsselung

BDE:
EXTRACT(YEAR | MONTH | DAY FROM datum)
SQL:
YEAR | MONTH | DAY(datum)
GETDATE() aktuelles Datum
DATEPART(DY, datum) Tag des Jahres

Länge eines Feldes

nur SQL: LEN(string)

Konvertieren von Ausdrücken

CAST( Ausdruck AS FLOAT)

Gruppierungsfunktionen

Gruppierungsfunktionen werden meistens in Verbindung mit der GROUP BY –Klausel verwendet.

Maximum der Spaltenwerte

MAX

Minimum der Spaltenwerte

MIN

Summe der Spaltenwerte

SUM

Durchschnitt der Spaltenwerte

AVG

Anzahl der Datenbankeinträge

COUNT

Zeichenketten sind in einfache Anführungsstriche zu setzen, gebrochene Zahlen müssen mit Dezimalpunkt geschrieben werden, Datumsangaben in der Syntax
tt.mm.jjjj (tt: Tag, mm: Monat, jjjj: Jahr).

Kommentare

Kommentare werden mit /* eingeleitet und enden mit */. Mit dem Tastenkürzel [Alt] + [K] kann ein im Editor selektierter Text auskommentiert werden.

Hinweis: Weitere Funktionen können Sie für Local SQL aus der Hilfedatei BDESQL.hlp der Installations-CD und für Transact-SQL aus der Hilfe des SQL-Servers entnehmen.

Beispiel

  • Auflistung aller Felder und Sätze aus der Bankendatei:
    select * from BANK
  • Auflistung aller Filialen der Dresdner Bank, mit der grössten Banknummer beginnend. Beachten Sie die richtige Gross- und Kleinschreibung in der WHERE-Klausel:
    select Banknummer, Name from BANK
    where Name like ’Raiffeisenbank%’
    order by Banknummer desc
  • Kundenabhängige Aufsummierung aller offenen Posten aus Rechnungen im Mandanten. Ausserdem werden die Anzahl und die durchschnittliche Höhe des OP‘s angezeigt:
    select KLNr, SUM(Offen) as Gesamt,
    COUNT(Offen) as Anzahl, AVG(Offen) as Durchschnitt
    from OPOS
    where OPTyp=’1’ and Status=’O’
    group by KLNr
  • Anzeige von Kundennummer und Firma/Name von allen (unterschiedlichen - distinct) Kunden, die offene Rechnungen besitzen:
    select distinct OPOS.KLNr, KUNDEN.Anzeigename
    from OPOS join KUNDEN
    on OPOS.KLNr=KUNDEN.Nummer
    where OPOS.OPTyp=’1’ and OPOS.Status=’O’